package com.buddy.qreport.query.service;

import com.buddy.qreport.common.mybatis.entity.Page;
import com.buddy.qreport.query.entity.QueryEntity;
import com.buddy.qreport.query.params.QueryParam;

import javax.servlet.http.HttpServletRequest;
import java.net.URISyntaxException;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public interface IQueryService {


    List<Map> testSql(String datasourceId,String sql) throws SQLException;

    /**
     * 
     * @param queryEntity
     */
    void insert(QueryEntity queryEntity);

    /**
     *
     * @param id
     */
    void delete(String id);

    /**
     *
     * @param e
     */
    void updateById(QueryEntity e);

    /**
     *
     * @param page
     * @return
     */
    Page<QueryEntity> selectList(Page page);

    /**
     *
     * @param queryId
     * @return
     */
    QueryEntity getOne(String queryId);

    /**
     * 转换查询参数，将查询数据源类型为sql的数据进行转换
     * @param datasourceId 查询绑定的数据源id
     * @param params
     */
    void castQueryParams(String datasourceId, List<QueryParam> params);

    /**
     * 执行动态查询
     * @param datasourceId
     * @param sql
     * @param params
     */
    List<Map> dynamicQuerySQL(String datasourceId, String sql, Map<String, String > params);

    /**
     * 执行动态查询，通过url获取数据
     *
     * @param url
     * @param params
     * @param headers 请求头
     * @return
     */
    List<Map> dynamicQueryURL(  String url, String method, Map<String, String > params,Map<String,String > headers) throws URISyntaxException, Exception;
}
